﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Sped.Sped
{
    /// <summary>
    /// REGISTRO C010: IDENTIFICAÇÃO DO ESTABELECIMENTO
    /// </summary>
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ProgId("SpedPisCofins.RegC010")]
    [ComVisible(true)]
    public class RegC010 : IBloco
    {
        /// <summary>
        /// Número de inscrição do estabelecimento no CNPJ
        /// </summary>
        public string CNPJ { get; set; }
        /// <summary>
        /// Indicador da apuração das contribuições e créditos, na escrituração das operações por NF-e e ECF, no período:
        ///     1 – Apuração com base nos registros de consolidação das operações por NF-e (C180 e C190) e por ECF (C490);
        ///     2 – Apuração com base no registro individualizado de NF-e (C100 e C170) e de ECF (C400)
        /// </summary>
        public string IND_ESCRI { get; set; }


        public override bool ValidaRegistro(ref string Erro)
        {
            var ValidacaoOK = true;
            Erro = "";

            if (string.IsNullOrEmpty(this.CNPJ))
            {
                this.CNPJ = string.Empty;
                Erro += "\r\n* Registro C010 - CNPJ não informado.";
                ValidacaoOK = false;
            }

            if (string.IsNullOrEmpty(this.IND_ESCRI))
            {
                this.IND_ESCRI = string.Empty;
                Erro += "\r\n* Registro C010 - Indicador da Apuração deve ser Informado.";
                ValidacaoOK = false;
            }
            else
            {
                if (!this.IND_ESCRI.StringIN("1-2"))
                {
                    Erro += "\r\n* Registro C010 - Indicador da Apuração Inválido.";
                    ValidacaoOK = false;
                }
            }

            return ValidacaoOK;  
        }

        public override string Layout()
        {
            var Linha = string.Empty;

            Linha += "C010" + this.Delimitador;
            Linha += this.CNPJ.Trim().removeFormatacao() + this.Delimitador;
            Linha += this.IND_ESCRI.Trim() + this.Delimitador;

            return Linha.Trim();
        }
    }
}
